JQuery - Kuchařka programátora
Úvod - Základy knihovny JQuery
Filozofie knihovny
- Hledání elementů - pomocí selektorů a manipulace s nimi
jQuery('div').hide(); // skryje obsah všech div
jQuery('div').text('Nový text'); // nahradí text uvnitř všech div
jQuery('div').addClass('updateContent'); // přidá třídu updateContent
jQuery('div').show(); // zobrazí obsah všech div
- Řetězená volání metod na skupině elementů
jQuery('div').hide().text('Nový text').addClass('updateContent').show(); // Zřetězený zápis téhož. A navíc je rychlejší, protože elementy DOM vybírá jen jednou
- Používání obalu jQuery a implicitní iterace. Předchozí příklad se provede na všech div. Nemusíme psát žádné each().
Uspořádání rozhraní
- Jádro knihovny jQuery
- Funkce jQuery
- Funkce pro přístup k vlastnostem objektu jQuery
- Data
- Zásuvné moduly
- Interoperabilita
- Selektory
- Základní selektory
- Hierarchické selektory
- Základní filtry
- Filtry obsahu
- Filtry viditelnosti
- Filtry atributů
- Filtry potomků
- Formulářové pseudotřídy
- Filtry Formulářů
- Atributy
- Attr
- Třída
- HTML
- Text
- Hodnota (Value)
- Procházení (traversing)
- Filtrování (Filtering)
- Hledání (Finding)
- Řetězení (Chaining)
- Manipulace
- Změna obsahu (contents changing )
- Vkládání do elementu (Inserting Inside)
- Vkládání mimo element (Inserting Outside)
- Vkládání okolo elementu (Inserting around)
- Nahrazování (Replacing)
- Ostraňování (Removing)
- Kopírování (Copying)
- Kaskádové styly
- Kaskádové styly
- Pozicování (Positioning)
- Výška šířka
- Události (Events)
- Načtení stránky
- Obsluha událostí (Event handling)
- Živé události (Live Events)
- Pomocné metody pro interakci (Interaction helpers)
- Pomocné metody pro události (Event helpers)
- Efekty
- Základní efekty (Basic)
- Posouvání (Sliding)
- Prosvítání (Fading)
- Vlastní (Custom)
- Nastavení (Setting)
- Ajax
- Ajaxové požadavky (Ajax request)
- Ajaxové události (Ajax events)
- Ostatní (Miscelanous)
- Pomocné funkce (Utility)
- Detekce prohlížeče a funkcí (Browser and Feature Detection)
- Operace s poli a objekty (Array and Object Oparations)
- Testovací operace (Test operation)
- Operace s textovými řetězci
- URL adresy
- Interní funkce
Spouštění jQuery - ready()
Kód jQuery se spouští až po načtení DOM. Netřeba tedy čekat na window.onload. To je zbytečně pozdě, protože se čeká na obrázky a tak.
jQuery(document).ready(function(){alert(jQuery('p').text())});
jQuery(function(){alert(jQuery('p').text())});
alert(jQuery('p').text()) // ale to musí být zapsáno až nakonec body (těsně břed značku
< / body>). Je to i rychlejší než psát do Head, ale pak se špatně zjišťuje (čte) co se vlastně musí spustit při startu.
Výběr elementů pomocí selektorů
- jQuery('a').length // vrátí počet anchor v DOM
- jQuery('a,p').length // vrátí počet anchor a paragraph v DOM, lze oddělovat čárkou pro výběr z více selektorů
- jQuery(document.getElementsByTagName('a')).length // dtto jak 1, selector dle odkazu na element podle javascriptu
Pro vyhledáváné se používá selektorový subsystém Sizzle. Nemusíme vyhledávat v celém DOM, ale lze vyhledávat v určitém kontextu
jQuery('input',$('form') // anebo v kontextu toho, co jsme našli dřív s pomocí jQuery. Ekvivalent za
$('form') je
document.forms[0], nebo
'form' Hledání v kontextu se dá krásně využít pokud chceme hledat ve vráceném dokumentu JSON/XML z AJAXu.
Filtrování a hledání Find(), Filter()
filter() - filtruje aktuální sadu elementů. Neboli zužuje již existující kontext.
find() - mění aktuální sadu elementů hledáním a to i v dceřiných elementech.
$('a').filter('external').length() // vybere všechny 'a' v DOM a v nich všechny co maj class 'external'. Pak se spočte počet.
$('a').filter(function(index){ return $(this).hasClass('external');}).length(); // zde jsme metodě filter předali anonymní funkci, která udělá výběr.
$(this) zde odkazuje na každý element obalené skupiny. Vracená hodnota false odstraní element z obalené skupiny. Argument
index sice nepoužíváme, ale určuje pořadí daného elementu z obalené skupiny.
Příklad na find()/filter(), kdy find() obarvuje dceřiné prvky a filter vybrané kontexové prvky najdeš na
example-Find_Filter.html
Vrácení k předchozímu výběru před destruktivnímu změnou - end() a sloučení více výběrů andSelf()
end() vlastně vrací kontext o úroveň výš a bez toho aby se změny/výběr vůbec provedly - ony se nakonec provedou, ale nejsou viditelné v kontextu end(). Samotné end() verací prázdnou množinu.
andSelf() funguje podobně, kdy kontext dvou předchozích metod dá do jednoho kontextu. $('div').find('p').andSelf().xxx(), kde xxx je nějaká metoda co bude aplikována na všechny div a dceřinné p.
Traverzování
- vybrání druhého elementu $('li:eq(1)'). Index od 0.
- vybrání třetího elementu $('li:eq(1)').next().
- vybrání prvního elementu $('li:eq(1)').prev().
- vybrání rodičovského elementu $('li:eq(1)').parent().
- vybrání sourozenců elementu $('li:eq(1)').parent().children().
- vybrání sourozenců za druhým elementem $('li:eq(1)').nextAll().
- vybrání sourozenců před druhým elementem $('li:eq(1)').prevAll().
Každá traverzovací metoda (next,prev,parent, ...) může mít parametr :last,:first
https://api.jquery.com/category/traversing
Vytváření, manuipulace, vkládání, odstraňování, nahrazování, klonování elementů
- Vytváření elementů $('
Ahoj
') je strašně jednoduché.
- Vytváření elementů s nastavením atributu $('
Ahoj
').find('a').attr('href',"#") je strašně jednoduché.
- Vytváření elementů a přidání do DOM $('
Ahoj
').find('a').attr('href',"#").end().appendTo('body') .
- Metody pro vytváření. append, prepend, prependTo, after,before, insertAfter, insertBefore, wrap, wrapAll,wrapInner
- Odstraňování .remove(). Např. .remove('.toRemove') dtto .filter('.toRemove').remove()
- Nahrazení .replaceWith(). Např. .filter('li.toremove').replaceWith('
- ahoj
ahoj
-
-
-
Užitečné odkazy